#!/bin/bash
set -x 
source ~/.bash_profile
source /etc/profile
if [ $# -lt 3 ]; then
    echo "error.. need deploy zip filename and path two args"
    exit 1
fi
#args
IP_ARRAY=("172.16.168.83" "172.16.34.86" "172.16.34.89" "172.16.34.87")
#用户
USER="root"
#服务类型 dubbo,webapp
SERVICE_TYPE="dubbo"
#工作根目录
WORKSPACE_ROOT="/home/ksh"
#备份根目录
WORKSPACE_BACKUP="$WORKSPACE_ROOT/backup"
#数据临时目录，jenkins上传的文件都在这里
WORKSPACE_TEMP="$WORKSPACE_BACKUP/temp"
#本地shell脚本存放的目录
WORKSPACE_SCRIPT="$WORKSPACE_ROOT/script"
#远程服务器根目录
REMOTE_ROOT="/opt"
#各服务的根目录
DIR_REMOTE_SERVICE="$REMOTE_ROOT/$SERVICE_TYPE/service"
#shell脚本存放的目录
DIR_REMOTE_SCRIPT="$REMOTE_ROOT/$SERVICE_TYPE/script"
#shell脚本存放的目录
DIR_REMOTE_TEMP="$REMOTE_ROOT/$SERVICE_TYPE/temp"
#脚本文件
SCRIPT_FILE="dubbo.deploy.sh"
#服务名称/按日期 备份目录
BACKUP_HOME="$WORKSPACE_BACKUP/$2/$(date +%Y%m%d%H%M%S)"

#进入临时目录
cd $WORKSPACE_TEMP
#获取真实的文件名称
deploy_file=`ls -t | grep $1 |head -1`
echo "deploy $SERVICE_TYPE file is : $WORKSPACE_TEMP/$deploy_file"
#判断如果文件不存在，退出
if [ ! -e "$WORKSPACE_TEMP/$deploy_file" ]; then
  echo "$WORKSPACE_TEMP/$deploy_file is not exist"
  exit 1
fi
#进入工作根目录
cd $WORKSPACE_ROOT
#判断备份目录是否存在，不存在就创建
if [ ! -e $BACKUP_HOME ]; then
  #创建目录
  mkdir -p $BACKUP_HOME
  echo "$BACKUP_HOME maked"
fi
#将临时目录下的文件移到备份目录
mv -f $WORKSPACE_TEMP/$deploy_file $BACKUP_HOME/$deploy_file
#判断备份目录下是否存在文件
if [ -f "$BACKUP_HOME/$deploy_file" ]; then
    #要创建的远程目录
    DIRECTORY="$DIR_REMOTE_TEMP $DIR_REMOTE_SERVICE $DIR_REMOTE_SCRIPT"
	  #ssh remote
    for ip in ${IP_ARRAY[*]}
    do
        echo "----------$ip------------"
        #创建目录
        ssh $USER@$ip "mkdir -p $DIRECTORY"
        #传输程序包文件
        scp $BACKUP_HOME/$deploy_file $USER@$ip:$DIR_REMOTE_TEMP
        #传输脚本文件
        scp $WORKSPACE_SCRIPT/$SCRIPT_FILE $USER@$ip:$DIR_REMOTE_SCRIPT
        #远程执行脚本
        ssh $USER@$ip "$DIR_REMOTE_SCRIPT/$SCRIPT_FILE $deploy_file $2 $3"
    done
fi
